<div ng-controller='filtering' ng-init="init()">
  <style>
    .filtering-container {
      margin-top: 3px;
    }
    .filter-panel-filter {
      display:inline-block;
      vertical-align: top;
      margin-left: 10px;
      width: 220px;
      padding: 5px 5px 0px 5px;
      border: #555 1px solid;
      margin: 0px 5px 5px 0px;
    }
    .filter-panel-filter ul {
      margin-bottom: 3px;
    }
    .filter-values {
      word-wrap: break-word;
      overflow-x: hidden;
    }
    .filter-must {
      border-bottom: #7EB26D 3px solid;
    }
    .filter-mustNot {
      border-bottom: #E24D42 3px solid;
    }
    .filter-deselected {
      opacity: 0.5;
    }
    .filter-either {
      border-bottom: #EF843C 3px solid;
    }
    .filter-action {
      float:right;
      margin-bottom: 0px !important;
      margin-left: 3px;
    }
    .filter-mandate {
      text-decoration: underline;
      cursor: pointer;
    }
    .filter-apply {
      float:right;
      margin-bottom: 5px;
    }
  </style>

  <div class='filtering-container'>
    <span ng-show="filterSrv.ids.length == 0"><h5>No filters available</h5></span>
    <div ng-repeat="id in filterSrv.ids" class="small filter-panel-filter" ng-class="{'filter-deselected': !filterSrv.list[id].active}">
      <div class="filter-{{filterSrv.list[id].mandate}}" >
        <strong>{{filterSrv.list[id].type}}</strong>
        <span ng-show="!filterSrv.list[id].editing" class="filter-mandate" ng-click="filterSrv.list[id].editing = true">{{filterSrv.list[id].mandate}}</span>

        <span ng-show="filterSrv.list[id].editing">
          <select class="input-small" ng-model="filterSrv.list[id].mandate" ng-options="f for f in ['must','mustNot','either']"></select>
        </span>

        <i class="filter-action pointer icon-remove" bs-tooltip="'Remove'" ng-click="remove(id)"></i>
        <i class="filter-action pointer" ng-class="{'icon-check': filterSrv.list[id].active,'icon-check-empty': !filterSrv.list[id].active}" bs-tooltip="'Toggle'" ng-click="toggle(id)"></i>
        <i class="filter-action pointer icon-edit" ng-hide="filterSrv.list[id].editing" bs-tooltip="'Edit'" ng-click="filterSrv.list[id].editing = true"></i>
      </div>

      <!-- Show filter keys and values -->
      <div ng-hide="filterSrv.list[id].editing && isEditable(filterSrv.list[id])" class="filter-values">
        <ul class="unstyled">
          <li ng-repeat="(key,value) in filterSrv.list[id]" ng-show="show_key(key)"><strong>{{key}}</strong> : {{ decodeFilterValue(value) | truncate }}</li>
        </ul>
      </div>

      <!-- When in Edit mode -->
      <div ng-show="filterSrv.list[id].editing && isEditable(filterSrv.list[id])">
        <ul class="unstyled">
          <li ng-repeat="key in _.keys(filterSrv.list[id])" ng-show="show_key(key)"><strong>{{key}}</strong> : <input type='text' ng-model="filterSrv.list[id][key]"></li>
        </ul>
      </div>
      <div class="filter-apply" ng-show="filterSrv.list[id].editing">
        <button ng-click="filterSrv.list[id].editing=undefined" class="btn btn-mini" bs-tooltip="'Save without refresh'">Save</button>
        <button ng-click="filterSrv.list[id].editing=undefined;refresh()" class="btn btn-success btn-mini" bs-tooltip="'Save and refresh'">Apply</button>
      </div>
    </div>
    <!-- <span bs-modal="'app/partials/paneleditor.html'" data-toggle="modal"> -->
    <i class="pointer icon-plus-sign" ng-click="add()" bs-tooltip="'Add a query filter'" data-placement="right"></i>
    <!-- </span> -->
  </div>
</div>
